package com.tydic.portal.service;

import com.tydic.common.core.domain.model.LoginUser;
import com.tydic.common.core.enums.LoginType;
import com.tydic.system.domain.vo.SysUserVo;

import java.util.function.Supplier;

public interface PortalLoginService {
    /**
     * 退出登录
     */
    void logout();

    /**
     * 记录登录信息
     *
     * @param loginCode 登录账号
     * @param status    状态
     * @param message   消息内容
     */
    void recordLoginInfo(String loginCode, String status, String message);

    /**
     * 构建登录用户
     */
    LoginUser buildLoginUser(SysUserVo user);

    /**
     * 记录登录信息
     *
     * @param userId 用户ID
     */
    void recordLoginInfo(String userId, String ip);

    /**
     * 登录校验
     */
    void checkLogin(LoginType loginType, String username, Supplier<Boolean> supplier);
}
